這篇文章會介紹使用 Python 的 Pillow 第三方函式庫,實作四種圖片模糊化的方法,和兩種圖片銳利化的方法。
- 本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
- 使用 Colab 操作需要連動 Google 雲端硬碟,請參考:連動 Google Drive
輸入下列指令安裝 Pillow,根據個人環境使用 pip 或 pip3,如果使用 Colab 或 Anaconda Jupyter,已經內建 Pillow 函式庫。
!pip install Pillow
載入 Pillow 的 Image 和 ImageFilter 模組,使用 Image.open 方法開啟圖片後,就能套用 filter 的 ImageFilter.BLUR 濾鏡,將圖片進行基本的模糊化。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用
from PIL import Image, ImageFilter
img = Image.open('oxxostudio.jpg') # 開啟圖片
output = img.filter(ImageFilter.BLUR) # 套用基本模糊化
output.save('output.jpg')
# output.show() # Colab 不支援直接顯示,如果使用本機環境會開啟圖片檢視器
除了基本的模糊化 BLUR 方法,也可以使用 ImageFilter.BoxBlur 濾鏡,設定模糊化的半徑,進行不同程度的模糊化效果。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用
from PIL import Image, ImageFilter
img = Image.open('oxxostudio.jpg')
output = img.filter(ImageFilter.BoxBlur(5)) # 套用 BoxBlur,設定模糊半徑為 5
output.save('output.jpg')
使用 ImageFilter.GaussianBlur 濾鏡,設定高斯模糊的半徑,進行不同程度的模糊化效果。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用
from PIL import Image, ImageFilter
img = Image.open('oxxostudio.jpg')
output = img.filter(ImageFilter.GaussianBlur(5)) # 套用 GaussianBlur,設定模糊半徑為 5
output.save('output.jpg')
除了上述幾個模糊化的方法,也可以使用 ImageFilter.UnsharpMask 濾鏡 ( 反銳利化 ),設定效果的的半徑、效果百分比 ( percent ) 以及臨界點 ( threshold ),就能進行不同程度的銳利化效果 ( 反之就是模糊 ),如果將效果百分比設為負值,就會出現模糊效果。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用
from PIL import Image, ImageFilter
img = Image.open('oxxostudio.jpg')
output = img.filter(ImageFilter.UnsharpMask(radius=5, percent=-100, threshold=3)) # 套用 UnsharpMask
output.show()
載入 Pillow 的 Image 和 ImageFilter 模組,使用 Image.open 方法開啟圖片後,就能套用 filter 的 ImageFilter.SHARPEN 濾鏡,將圖片進行基本的銳利化。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用
from PIL import Image, ImageFilter
img = Image.open('oxxostudio.jpg') # 開啟圖片
output = img.filter(ImageFilter.SHARPEN) # 套用圖片銳利化
output.save('output.jpg') # 存檔
# output.show() # Colab 不支援直接顯示,如果使用本機環境會開啟圖片檢視器
如果要讓圖片非常銳利,可以使用 for 迴圈連續套用銳利化濾鏡。
相關教學參考:重複迴圈 ( for、while )
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用
from PIL import Image, ImageFilter
img = Image.open('oxxostudio.jpg')
for i in range(3):
img = img.filter(ImageFilter.SHARPEN)
img.save('output.jpg')
除了單純銳利化的方法,也可以使用 ImageFilter.UnsharpMask 濾鏡 ( 反銳利化 ),設定效果的的半徑、效果百分比 ( percent ) 以及臨界點 ( threshold ),就能進行不同程度的銳利化效果 ( 效果百分比設為負值,會出現模糊效果 )。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用
from PIL import Image, ImageFilter
img = Image.open('oxxostudio.jpg')
output = img.filter(ImageFilter.UnsharpMask(radius=5, percent=100, threshold=10)) # 套用 UnsharpMask
output.show()
大家好,我是 OXXO,是個即將邁入中年的斜槓青年,我已經寫了超過 400 篇 Python 的教學,有興趣可以參考下方連結呦~ ^_^